package com.wengu.algorithm.dto;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class UserAlg {
    public Long id;
    /**
     * 起点X
     */
    public int startX;
    /**
     * 起点Y
     */
    public int startY;
    /**
     * 终点X
     */
    public int destX;
    /**
     * 终点Y
     */
    public int destY;
    /**
     * 总预算
     */
    public double budget;
    /**
     * 用户执行总成本
     */
    public double executionCost = 0;
    /**
     * 用户旅行总成本
     */
    public double distanceCost = 0;

    /**
     * 真正的最佳路径
     */
    public List<TaskAlg> realPath = new ArrayList<>();
    /**
     * BETDA算法的最佳路径
     */
    public List<TaskAlg> pathB = new ArrayList<>();

    /**
     * ETDA算法的最佳路径
     */
    public List<TaskAlg> pathETDA = new ArrayList<>();
    /**
     * path对应的效用值
     */
    public double realDeltaF;
    /**
     * BETDA算法的对应的效用值
     */
    public double deltaFB;
    /**
     * ETDA算法的对应的效用值
     */
    public double deltaFETDA;

    /**
     * 最佳算法名称
     */
    public String algName;

    /**
     * 已用费用
     */
    public double usedCost = 0;  //
    /**
     * 用户到达时间（相对于场景开始时间持续到了多少秒）
     */
    private double arrivalTime;
    @Override
    public UserAlg clone() {
        try {
            return (UserAlg) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }
}